//
// Created by longyunbo on 7/20/21.
//

#ifndef ANALYSIS_BYTECODES_H
#define ANALYSIS_BYTECODES_H


class Bytecodes {

public:
 static const int ILLEGAL = -1;
 static const int NOP = 0;
 static const int ACONST_NULL = 1;    // 0x01
 static const int ICONST_0 = 3;   // 0x03
 static const int ICONST_1 = 4;   // 0x04
 static const int ICONST_2 = 5;   // 0x05
 static const int ICONST_3 = 6;   // 0x06
 static const int ICONST_4 = 7;   // 0x07
 static const int ICONST_5 = 8;   // 0x08

 static const int FCONST_0 = 11;   // 0x0b
 static const int FCONST_1 = 12;   // 0x0c
 static const int FCONST_2 = 13;   // 0x0e

 static const int DCONST_0 = 14;   // 0x0e
 static const int DCONST_1 = 15;   // 0x0f

 static const int BIPUSH = 16;    // 0x10
 static const int SIPUSH = 17;       // 0x11

 static const int LDC = 18;       // 0x12
 static const int LDC_W = 19;     // 0x13
 static const int LDC2_W = 20;    // 0x14

 static const int ILOAD = 21;   // 0x15

 static const int ILOAD_0 = 26;   // 0x1a
 static const int ILOAD_1 = 27;   // 0x1b
 static const int ILOAD_2 = 28;   // 0x1c
 static const int ILOAD_3 = 29;   // 0x1d

 static const int LLOAD_0 = 30;   // 0x1e
 static const int LLOAD_1 = 31;   // 0x1f
 static const int LLOAD_2 = 32;   // 0x20
 static const int LLOAD_3 = 33;   // 0x21

 static const int FLOAD_0 = 34;   // 0x22
 static const int FLOAD_1 = 35;   // 0x23
 static const int FLOAD_2 = 36;   // 0x24
 static const int FLOAD_3 = 37;   // 0x25

 static const int DLOAD_0 = 38;   // 0x26
 static const int DLOAD_1 = 39;   // 0x27
 static const int DLOAD_2 = 40;   // 0x28
 static const int DLOAD_3 = 41;   // 0x29

 static const int ALOAD_0 = 42;   // 0x2a
 static const int ALOAD_1 = 43;   // 0x2b
 static const int ALOAD_2 = 44;   // 0x2c
 static const int ALOAD_3 = 45;   // 0x2d

 static const int IALOAD = 46;    // 0x2e
 static const int LALOAD = 47;    // 0x2f
 static const int FALOAD = 48;    // 0x30
 static const int DALOAD = 49;    // 0x31
 static const int AALOAD = 50;    // 0x32
 static const int BALOAD = 51;    // 0x33
 static const int CALOAD = 52;    // 0x34
 static const int SALOAD = 53;    // 0x35

 static const int ISTORE = 54;  // 0x36
 static const int LSTORE = 55;  // 0x37
 static const int FSTORE = 56;  // 0x38
 static const int DSTORE = 57;  // 0x39
 static const int ASTORE = 58;  // 0x3a

 static const int ISTORE_0 = 59;  // 0x3b
 static const int ISTORE_1 = 60;  // 0x3c
 static const int ISTORE_2 = 61;  // 0x3d
 static const int ISTORE_3 = 62;  // 0x3e

 static const int LSTORE_0 = 63; // 0x3f
 static const int LSTORE_1 = 64; // 0x40
 static const int LSTORE_2 = 65; // 0x41
 static const int LSTORE_3 = 66; // 0x42

 static const int FSTORE_0 = 67; // 0x43
 static const int FSTORE_1 = 68; // 0x44
 static const int FSTORE_2 = 69; // 0x45
 static const int FSTORE_3 = 70; // 0x46

 static const int DSTORE_0 = 71; // 0x47
 static const int DSTORE_1 = 72; // 0x48
 static const int DSTORE_2 = 73; // 0x49
 static const int DSTORE_3 = 74; // 0x4a

 static const int ASTORE_0 = 75; // 0x4b
 static const int ASTORE_1 = 76; // 0x4c
 static const int ASTORE_2 = 77; // 0x4d
 static const int ASTORE_3 = 78; // 0x4e
 static const int IASTORE = 79; // 0x4f
 static const int LASTORE = 80; // 0x50
 static const int FASTORE = 81; // 0x51
 static const int DASTORE = 82; // 0x52
 static const int AASTORE = 83; // 0x53

 static const int DUP = 89;       // 0x59

 static const int IADD = 96;      // 0x60
 static const int LADD = 97;      // 0x61
 static const int FADD = 98;      // 0x62
 static const int DADD = 99;      // 0x63

 static const int IINC = 132;     // 0x84

    //=====
 static const int I2L = 133;      // 0x85
 static const int I2F = 134;      // 0x86
 static const int I2D = 135;      // 0x87
 static const int L2I = 136;      // 0x88
 static const int L2F = 137;      // 0x89
 static const int L2D = 138;      // 0x8a
 static const int F2I = 139;      // 0x8b
 static const int F2L = 140;      // 0x8c
 static const int F2D = 141;      // 0x8d
 static const int D2I = 142;      // 0x8e
 static const int D2L = 143;      // 0x8f
 static const int D2F = 144;      // 0x90
 static const int I2B = 145;      // 0x91
 static const int I2C = 146;      // 0x92
 static const int I2S = 147;      // 0x93

 static const int IF_ICMPEQ = 159;    // 0x9f
 static const int IF_ICMPNE = 160;    // 0xa0
 static const int IF_ICMPLT = 161;    // 0xa1
 static const int IF_ICMPGE = 162;    // 0xa2
 static const int IF_ICMPGT = 163;    // 0xa3
 static const int IF_ICMPLE = 164;    // 0xa4
 static const int IF_ACMPEQ = 165;    // 0xa5
 static const int IF_ACMPNE = 166;    // 0xa6

 static const int GOTO = 167;    // 0xa7

 static const int IRETURN = 172;      // 0xac

 static const int ARETURN = 176;      // 0xb0
 static const int RETURN = 177;       // 0xb1

 static const int GETSTATIC = 178;    // 0xb2
 static const int PUTSTATIC = 179;    // 0xb3
 static const int GETFIELD = 180;     // 0xb4
 static const int PUTFIELD = 181;     // 0xb5

 static const int INVOKEVIRTUAL = 182;        // 0xb6
 static const int INVOKESPECIAL = 183;        // 0xb7
 static const int INVOKESTATIC = 184;         // 0xb8
 static const int INVOKEINTERFACE = 185;      // 0xb9
 static const int INVOKEDYNAMIC = 186;        // 0xba

 static const int NEW = 187;          // 0xbb
 static const int NEWARRAY = 188;     // 0xbc
 static const int ANEWARRAY = 189;    // 0xbd
 static const int ARRAYLENGTH = 190;  // 0xbe

 static const int ATHROW = 191;       // 0xbf
 static const int CHECKCAST = 192;    // 0xc0
};


#endif //ANALYSIS_BYTECODES_H
